package com.example.qxfw.hbqx.service;

import com.example.qxfw.common.entity.qx.HeavyForecast;
import com.example.qxfw.common.entity.xt.SysConfig;
import com.example.qxfw.common.entity.zy.*;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

public interface HjybcpService {
    /**
     *根据参数类型查询系统配置
     * @param paramtype 参数类型
     * @return
     */
    List<SysConfig> selectByParamTypeOfSysConfig(String paramtype);

    /**
     *根据观测时间段查询污染扩散等级预报
     * @param observtimeStart 观测时间起点
     * @param observtimeEnd 观测时间终点
     * @return
     */
    List<AirpolConFcst> selectByObservTimeOfAirpolConFcst(Date observtimeStart, Date observtimeEnd);

    /**
     *根据观测时间更新污染扩散等级预报
     * @param observtime 观测时间
     * @param level 等级
     * @param totalweight 总权重
     * @param asseaa 评价
     * @param describe 描述
     * @param condition 条件
     * @return
     */
    int updateByObservTime(Date observtime, String level, Integer totalweight, String asseaa, String describe, String condition);

    /**
     *插入数据到污染扩散等级预报
     * @param observtime 观测时间
     * @param level 等级
     * @param totalweight 总权重
     * @param asseaa 评价
     * @param describe 描述
     * @param condition 条件
     * @return
     */
    int insertOfAirPolConForecast(Date observtime, String level, Integer totalweight, String asseaa, String describe, String condition);

    /**
     * 根据名字和类型修改参数赋值
     * @param paramvalue
     * @param paramname
     * @param paramtype
     * @return
     */
    int updateByNameAndTypeOfSysConfig(String paramvalue, String paramname, String paramtype);

    /**
     * 根据日期类型id删除空气质量精细化预报主表数据
     * @param datechar 日期
     * @param forecasttype 预报类型
     * @param stationid 站点序号
     * @return
     */
    int deleteByDateTypeIdOfAirpolFcst(Date datechar, Integer forecasttype, String stationid);

    /**
     * 添加空气质量精细化预报结果表
     * @param stationid
     * @param stationname
     * @param datechar
     * @param forecasttype
     * @param ntimes
     * @param so2
     * @param no2
     * @param pm10
     * @param co
     * @param o3_1h
     * @param o3_8h
     * @param pm2_5
     * @param pri
     * @param aqi
     * @param longitude
     * @param latitude
     * @param altitude
     * @return
     */
    int insertOfAirPolFcstFinal(
            String stationid, String stationname, Date datechar,
            Integer forecasttype, Integer ntimes, Double so2, Double no2,
            Double pm10, Double co, Double o3_1h, Double o3_8h, Double pm2_5, String pri,
            Integer aqi, Double longitude, Double latitude, Double altitude);

    /**
     *根据日期和预报类型查询空气质量精细化预报主表
     * @param datechar 日期
     * @param forecasttype 预报类型
     * @return
     */
    List<AirpolFcst> selectByDateAndTypeOfAirpolFcst(Date datechar, Integer forecasttype);

    /**
     * 查询所有环保站信息
     * @return
     */
    List<EnviroStation> selectOfEnviroStation();

    /**
     * 根据站点id日期预报类型查询空气质量精细化预报主表
     * @param stationid 站点id
     * @param datecharStart 开始日期
     * @param datecharEnd 结束日期
     * @param forecasttype 预报类型
     * @return
     */
    List<AirpolFcst> selectByIdDateTypeOfAirpolFcst(String stationid, Date datecharStart, Date datecharEnd, Integer forecasttype);

    /**
     * 根据日期查询空气质量精细化预报主表,不包含站点id的
     * @param stationid 站点id
     * @param observtimeStart 开始日期
     * @param observtimeEnd 结束日期
     * @return
     */
    List<AirPollution> selectByNotIdAndDateOfAirpolFcst(String stationid, Date observtimeStart, Date observtimeEnd);

    /**
     *根据站点id日期预报类型查询空气质量精细化预报结果表
     * @param stationid 站点id
     * @param datecharStart 开始日期
     * @param datecharEnd 结束日期
     * @param forecasttype 预报类型
     * @return
     */
    List<AirPolFcstFinal> selectByIdDateTypeOfAirPolFcstFinal(String stationid, Date datecharStart, Date datecharEnd, Integer forecasttype);

    /**
     * 根据日期查询空气质量精细化预报主表,转换
     * @param stationid 站点id
     * @param observtimeStart 开始日期
     * @param observtimeEnd 结束日期
     * @return
     */
    List<AirPollution> selectByNotIdAndDateOfAirpolFcstChange(String stationid, Date observtimeStart, Date observtimeEnd);

    /**
     * 根据当前时间和判定调价查询数据库是否有数据
     * @param heavyForecast 重要污染预报
     * @return
     */
    List<HeavyForecast> selectByNowTimeAndjudgetypeOfHeavyForecast(HeavyForecast heavyForecast);

    /**
     * 更新重要污染预报
     * @param heavyForecast 重要污染预报
     * @return
     */
    int updateOfHeavyForecast(HeavyForecast heavyForecast);

    /**
     * 添加重要污染预报
     * @param heavyForecast 重要污染预报
     * @return
     */
    int insertOfHeavyForecast(HeavyForecast heavyForecast);

    /**
     * 根据日期类型查询点查询空气质量精细化预报主表
     * @param datechar 时间
     * @param forecasttype 预报类型
     * @return
     */
    List<AirpolFcst> selectByDateAndTimeAndTypeOfAirpolFcst(
           Timestamp datechar, Integer forecasttype
    );



//--------------------------------------------------模型-----------------------------------------------------------------


    /**
     * 自动判断（AQI模型）
     */
    void AutoJudge();





}
